40 PRINT"[147]":POKE53280,0:POKE53281,0:DIMST$(17) 41 A$="PLEASE STAND BY ...." 43 FORX=1TO500:NEXT 45 PRINT"[147][151]"A$:FORX=1TO25:NEXT 46 PRINT"[152]"A$:FORX=1TO25:NEXT 47 PRINT"[155]"A$:FORX=1TO25:NEXT 48 PRINT""A$:FORX=1TO25:NEXT 59 FORI=1TO17:READST$(I):NEXT 60 CK=0:REM INITIALIZE CHECKSUM 70 FORI=828TO909:READX:POKEI,X:REM POKE ML ROUTINE 80 CK=CK+X 90 NEXT 91 PRINT"[155]"A$:FORX=1TO25:NEXT 92 PRINT"[152]"A$:FORX=1TO25:NEXT 93 PRINT"[151]"A$:FORX=1TO25:NEXT 94 PRINT"[147]":FORX=1TO500:NEXT 100 : 101 PRINT"[147]";:GOSUB 60600:FORX=1TO3000:NEXT:GOSUB60860 102 GETA$:IFA$=""THEN 102 103 IFA$="P"ORA$="[208]"THEN WH$=A$:GOTO 110 104 IFA$="S"ORA$="[211]"THEN WH$=A$:GOTO 110 105 IFA$=CHR$(13) THEN GOSUB 61000 106 GOTO 102 110 GOSUB 61500 115 OPEN5,DV:PRINT#5:PRINT#5 120 IFWH$="S"THENWH=1:GOTO160 130 IFWH$="P"THENWH=2:POKE832,8:POKE832,9:GOTO160:REM PASSPORT REGISTERS 140 : 150 REM SETUP AND INITIALIZATION FOR SEQUENTIAL AND PASSPORT INTERFACES 160 CR(1)=56832:CR(2)=56840:REM CONTROL REGISTERS 170 RS(1)=3:RS(2)=19:REM MASTER RESET 180 IN(1)=149:IN(2)=145:REM RECEIVE INTERRUPTS 190 BU=866 :REM LOCATION OF ML ROUTINE TO GET DATA 200 MB=825 :REM LOCATION OF CURRENT MIDI BYTE 210 REM *** INITIALIZE *** 220 POKE251,0:POKE252,192:REM POKE LO,HI BYTES OF START OF BUFFER (49152) 230 POKE826,0:POKE827,0:REM STORE STARTING VALUES OF BUFFER POINTERS 240 POKECR(WH),RS(WH):REM MASTER RESET 250 POKECR(WH),IN(WH):REM RECEIVE INTERRUPTS FROM MIDI 260 POKE56333,127:REM DISABLE INTERRUPTS 270 POKE788,60:POKE789,3:REM STORE ADDRESS OF NEW INTERRUPT ROUTINE 280 POKE56333,129:REM RESTORE INTERRUPTS 290 REM *** READ MIDI DEVICE *** 300 PRINT"[147]":IFDV=4THENPRINT"RUNNING...." 301 PRINT#5," NOW LISTENING FOR MIDI DATA " 310 PRINT#5," PRESS SPACE TO ABORT TO MENU " 320 GETA$:IFA$=CHR$(32)THEN PRINT#5:PRINT#5:CLOSE5:GOTO101 330 SYSBU:B=PEEK(MB) 340 IFB<128THENPRINT#5,B;:GOTO320:REM <128 FOR DATA BYTES 350 IFB=254THEN320:REM END 360 PRINT#5 370 IFB>239THEN420:REM <240 FOR CHANNEL MESSAGES 380 T=((B AND 112)/16)+1:CH=(B AND 15)+1 390 PRINT#5,ST$(T);", CH #";CH; 400 GOTO320 410 REM SYSTEM MESSAGES 420 IFB=240THENPRINT#5,ST$(8);:GOTO320 430 IFB=242THENPRINT#5,ST$(9);:GOTO320 440 IFB=243THENPRINT#5,ST$(10);:GOTO320 450 IFB=246THENPRINT#5,ST$(11);:GOTO320 460 IFB=247THENPRINT#5,ST$(12);:GOTO320 470 IFB=250THENPRINT#5,ST$(13);:GOTO320 480 IFB=251THENPRINT#5,ST$(14);:GOTO320 490 IFB=252THENPRINT#5,ST$(15);:GOTO320 500 IFB=255THENPRINT#5,ST$(16);:GOTO320 510 PRINT#5,ST$(17);:GOTO320 520 DATA"NOTE OFF","NOTE ON","POLY PRESSURE","CONTROL CHANGE" 530 DATA"PROGRAM CHANGE","CHANNEL PRESSURE","PITCH BEND" 540 DATA"SYSEX START","SONG POINTER","SONG SELECT","TUNING COMMAND" 550 DATA"SYSEX END" 560 DATA"START","CONTINUE","STOP","RESET","UNDEFINED" 570 DATA72,152,72,173,2,222,74,176 580 DATA3,76,92,3,173,3,222,201 590 DATA254,240,13,201,248,240,9,141 600 DATA56,3,32,122,3,76,63,3 610 DATA104,168,104,76,49,234,173,58 620 DATA3,205,59,3,208,6,169,254 630 DATA141,57,3,96,168,177,251,238 640 DATA58,3,141,57,3,96,172,59 650 DATA3,200,152,136,205,58,3,240 660 DATA3,141,59,3,173,56,3,145 665 DATA251,96 60600 PRINT"" 60610 PRINT:POKE53280,14:POKE53281,14 60630 PRINT" [223][223][146] [223] [223][146][223] [223][146][223] [223][146][223] [223][146][223] [223][146][223] [223][146][223] [223]" 60640 PRINT" [223][223][146] [223][223][146][223][223][146][223][223][146][223][223][146][223][223][146][223][223][146][223][223][146] [223][223][146] [223][223][146][223][223][146][223][223][146][223][223]" 60650 PRINT" [146] [146][146][146][146][146][146] [146] [146] [146][146] " 60660 PRINT" [146] [146][146] [146][146][146] [146] [146]  [146] [164]" 60670 PRINT"  [146] [146][146][146] [146]  [146] [146] [146][146][146]" 60680 PRINT" " 60690 PRINT" " 60700 PRINT" PRESENTS ..... " 60701 PRINT" " 60710 PRINT" [176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174] " 60720 PRINT" [176][177][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][177][174] " 60730 PRINT" [176][179] [171][174] " 60740 PRINT" [221][221] MIDI HACKER [221][221] " 60750 PRINT" [221][221] [221][221] " 60760 PRINT" }} BY }}" 60770 PRINT" }} }}" 60780 PRINT" }} DAVID R. BROOKS }}" 60785 PRINT" [221][221] [221][221]" 60786 PRINT" [221][221] (C) 1987 [221][221]" 60790 PRINT" [173][179] [171][189]" 60800 PRINT" [173][178]````````````````````[178][189]" 60810 PRINT" [173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]" 60850 RETURN 60860 PRINT"" 60870 PRINT" [146]" 60880 PRINT" MENU  [146]" 60881 PRINT"  [146]" 60882 PRINT" WHICH INTERFACE ARE YOU [174][146]" 60883 PRINT" [171][146]" 60884 PRINT" USING ? [221][146]" 60885 PRINT" [221][146]" 60886 PRINT" P)ASSPORT OR S)EQUENTIAL [221][146]" 60887 PRINT" [221][146]" 60888 PRINT" PRESS RETURN TO EXIT [221][146]" 60889 PRINT" [221][146]" 60890 PRINT" [221][221] (C) 1987 [221][146]":RETURN 61000 PRINT"[145][145][145] ARE YOU SURE (Y/N) [146]" 61010 GETA$:IFA$=""THEN 61010 61015 IFA$="N"ORA$="[206]" THEN 60860 61017 IFA$="Y"ORA$="[217]"THEN 61020 61018 GOTO 61010 61020 OPEN15,8,15,"R0:HELLO CONNECT=HELLO CONNECT":INPUT#15,ER:CLOSE15 61021 IFER<>63 THEN PRINT"[147]":END 61023 LOAD"HELLO CONNECT",8 61500 GOSUB60600:PRINT"" 61510 PRINT" [146] 61512 [153]" OUTPUT TO TANWAIT 61513 PRINT"  [146] 61514 [153]" S)CREEN OR P)RINTER  WAIT 61515 PRINT"  [146] 61516 [153]" BY WAIT 61520 GETA$:IFA$=""THEN 61520 61530 IFA$="S"ORA$="[211]" THEN DV=3:RETURN 61540 IFA$="P"ORA$="[208]" THEN DV=4:GOTO61550 61545 GOTO 61520 61550 OPEN15,DV,15:CLOSE15:IFST=0THEN RETURN 61560 GOSUB60600:PRINT"" 61562 PRINT" [192]" 61565 PRINT" PRINTER NOT READY  " 61566 PRINT"  " 61568 PRINT" PRESS (RETURN)  " 61569 PRINT"  " 61570 PRINT" " 61575 GETA$:IFA$=""THEN61575 61577 IFA$=CHR$(13) THEN GOSUB60600:GOTO61500 61589 GOTO 61575